Freelemelectronic.com

Электроника без границ.

Еще один проект с простыми вещами на STM32f103c8t6, это подключение гироскопа LSM6DS3. Знаю тема избитая не один раз но возможно мои наработки будут кому то интересны. Итак в этом проекте я решил отказаться от использования интерфейса I2C как описано в других проектах например на сайте "narodstream.ru", ввиду того что I2C довольно медленный и при конечном расчете в результат будет закрадываться существенная ошибка. В этом проекте для подключения датчика использован интерфейс SPI на скорости 6 Mbits/s схема подключения внизу. Очень советую использовать линию прерывания INT1 для отслеживания окончания преобразования сигнала, настраивается установкой соответствующих битов в регистре INT1_CTRL (0Dh), в данном проекте я это не предусмотрел. Как и в предидущих проектах данные будут передаваться на компьютер через CDC-COM порт эмулятор с использованием библиотеки "Hall".

Как все работает. Ниже в архиве с проектом вы надете исходники с программой написаной в среде KEIL с ипользованием библиотеки HALL. После инициализации переферии (в данном проекте это SPI2) проводим инициализацию модуля гироскопа и акселерометра LSM6DS3 в файле lsm6ds3.с . Результат преобразования угловой скорости и ускоренияпоступательного движения будет расчитываться с частотой в 104гц. Разрешение угловой скорости принято 1000dps. Т.к. днанные снимаются с двух регистров младшего и старшего то максимальное число 65535 мы получим при угловой скорости в 1000 градусов в секунду. Тогда угол поворота будет расчитываться как (65535/1000) помноженному на дeльту времени в секундах. В бесконечном цикле нашей программы будет происходить проверка битов готовности результата преобразования это LSM6DS3_GDA и LSM6DS3_XLDA регистра LSM6DS3_STATUS_REG. После установки битов готовности результата измерения, происходит считывание регистров результата датчиков гироскопа и ускорения, запись в массив и отправка через функцию CDC_Transmit_FS на компьютер для дальнейшей обработки. Отправляемый пакет представляет из себя строку из 13 байт соответствуюший значениям в регистрах результатов измерений с 0х22 по 0х2D, последний байт это байт обозначающий конец строки.

Для обработки результатов измерений я использовал самодельную программу написанную на LABVIEW. Для упрощения проекта я не стал обрабатывать результаты со всех датчиков гироскопа а ограничился только осью "Z" датчика угловой скорости. Прект не коммерческий а для понимания работы этого вполне достаточно. LABVIEW предоставляет много возможностей для обработки сигнала у себя я использовал только фильтр нижних частот. Программа не скомпилирована исходники CUBE MX , Keil и LABVIEW находятся в архиве ниже.

Программа отображения результатов на компьютере интуитивно понятна. Подключите ком порт, дождитесь расчета среднеквадратичного смещения или точки нуля, повращайте датчиком. Поиграйте настройками. Не забудьте установить "visa450full" иначе LABVIEW не увидит COM порт. "visa450full" найдете в папке с проектом STM32F103CBT6 И SI4432.

Скрин с окном программы.

Видео с работой устройства.

В архиве к проекту находятся папки с исходниками к проекту CUBE MX, KEIL и исходники LabView программы "Giro Accel". Скачать здесь

You can contact the developers of the project freelemelectronic.com by e-mail:
freelimelectronic@gmail.com.